DynamoDBテーブルのキャパシティーモード一覧を取得するスクリプトを作ってみた(あなたのテーブルは、オンデマンド? プロビジョニング済み?)
DynamoDBには2つのキャパシティーモードがあり、それによって料金が変わります。
現在のプロジェクトには、DynamoDBのテーブルが数十あるのですが、「普段のアクセス数は少ないが、たまにスパイク的なアクセスがある」というテーブルが多くあります。
このような場合は、「プロビジョニング済みキャパシティーモード」よりも「オンデマンドキャパシティーモード」のほうが合っていると考え、「現状のキャパシティーモードを調べよう」となりました。
「数十のテーブル × n環境」を手作業で調べると大変なので、調べるためのスクリプトを作ってみました。今後も使えるので楽ができます。
環境
項目 | バージョン |
---|---|
macOS | Mojave 10.14.6 |
AWS CLI | aws-cli/1.16.220 Python/3.7.2 Darwin/18.7.0 botocore/1.12.215 |
Python | 3.7 |
作成したスクリプト
Pythonで作成しました。お好みにカスタマイズしてお使いください!
動作の様子
実行します。
$ python check_dynamodb.py
実行結果の例は、下記です。(DynamoDBのテーブルが2個あるとき)
{ "table_name": "aaaaa", "table_size_bytes": 1234, "item_count": 56, "billing_mode": "PAY_PER_REQUEST", "rcu": 0, "wcu": 0, "global_secondary_indexes": [] } { "table_name": "xxxxx", "table_size_bytes": 98765, "item_count": 432, "billing_mode": "PROVISIONED", "rcu": 40, "wcu": 5, "global_secondary_indexes": [ { "index_name": "yyyyy-index", "rcu": 5, "wcu": 5 }, { "index_name": "zzzzz-index", "rcu": 70, "wcu": 2 } ] }
さいごに
常時アクセスが無い(少ない)場合は、オンデマンドのほうが便利&安くなる場合が多そうですが、「リクエスト回数(特に書き込み)」や「書き込みサイズ」には注意が必要です。 (料金はこの2つに大きく左右されるため)
また、カンマ区切りに出力して、Excelやスプレッドシートに貼り付け、「データをカンマで区切る」的な操作をすると、簡単に表ができたりします。